/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.eam.gruposenior.gestorLEcciones.vista.common;

import edu.eam.gruposenior.gestorLEcciones.controladores.CategoriaController;
import edu.eam.gruposenior.gestorLEcciones.controladores.LeccionController;
import edu.eam.gruposenior.gestorLEcciones.entidades.CategoriaSubcategoria;
import edu.eam.gruposenior.gestorLEcciones.entidades.LeccionAprendida;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import javax.swing.text.StyledEditorKit.ForegroundAction;
import javax.swing.tree.TreeNode;

/**
 *
 * @author Claudia
 */
public class CategoriaTreeNode implements TreeNode{
    
    private CategoriaSubcategoria categoria;
    private ArrayList<CategoriaTreeNode> subcategorias;
    private CategoriaTreeNode padre;
    private ArrayList<LeccionAprendidaTreeNode> lecciones;

    public CategoriaTreeNode(CategoriaSubcategoria categoria,CategoriaTreeNode padre) {
        this.categoria = categoria;
        this.padre=padre;
        
        List<CategoriaSubcategoria>subs=new CategoriaController().
                subcatgoriasCategoria(categoria.getId());
        
        subcategorias=new ArrayList();
        for (CategoriaSubcategoria categoriaSubcategoria : subs) {
            subcategorias.add(new CategoriaTreeNode(categoriaSubcategoria,this));
        }
        
        lecciones=new ArrayList();
        List<LeccionAprendida> listaLecc=new LeccionController().leeccionesCategoria(categoria.getId());
       
        
        for (LeccionAprendida leccionAprendida : listaLecc) {
            lecciones.add(new LeccionAprendidaTreeNode(padre, leccionAprendida));
        }
        
    }
    
    

    @Override
    public TreeNode getChildAt(int childIndex) {
      if(childIndex>=subcategorias.size()){
          childIndex=-subcategorias.size()+childIndex;
          return lecciones.get(childIndex);
      }else{
          return subcategorias.get(childIndex);
          
      }
    }

    @Override
    public int getChildCount() {
       return subcategorias.size()+lecciones.size();
    }

    @Override
    public TreeNode getParent() {
        return padre;
    }

    @Override
    public int getIndex(TreeNode node) {
        int ind=subcategorias.indexOf(node);
        if(ind==-1){
            return lecciones.indexOf(node);
        }
        return ind;
    }

    @Override
    public boolean getAllowsChildren() {
        return true;
    }

    @Override
    public boolean isLeaf() {
        return false;
    }

    @Override
    public Enumeration children() {
        return null;
    }

    @Override
    public String toString() {
        return categoria.getNombre();
    }

    public CategoriaSubcategoria getCategoria() {
        return categoria;
    }
    
    
    
}
